/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package admin.matrices;

import DBMS.DataBaseManager;
import clases.Columna;
import clases.Lista;
import clases.Matriz;
import clases.Ruta;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author andreth
 */
public class ConsultarMatriz extends DispatchAction {

    /*
     * forward name="success" path=""
     */
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static final String POPULATE = "populate";
    private static final String SOME = "some";
    private static final String name = "Consultar Matriz";

    public ActionForward populate(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
//        Usuario usr = (Usuario) request.getSession().getAttribute("logueado");
//        DataBaseManager dbms = DataBaseManager.getInstance();
//        if (!PermisosManager.validar(this.name, dbms.consultarPermisoAccion(name), usr.getPermiso())) {
//            System.out.println("No tiene permiso");
//            return mapping.findForward(FAILURE);
//        }
        DataBaseManager dbms = DataBaseManager.getInstance();
        ArrayList<Matriz> matrices = DataBaseManager.getInstance().consultarMatrices();
        request.setAttribute("matrices", matrices);
        request.getSession().setAttribute("Ruta", new Ruta("Accion: Consultando Matriz"));
        return mapping.findForward(POPULATE);
    }

    public ActionForward one(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
//        Usuario usr = (Usuario) request.getSession().getAttribute("logueado");
//        DataBaseManager dbms = DataBaseManager.getInstance();
//        if (!PermisosManager.validar(this.name, dbms.consultarPermisoAccion(name), usr.getPermiso())) {
//            System.out.println("No tiene permiso");
//            return mapping.findForward(FAILURE);
//        }
        DataBaseManager dbms = DataBaseManager.getInstance();
        Matriz matriz = dbms.consultarMatriz((Matriz) form);
        System.out.println("matrizConsultada" + matriz.getNombre());
        ArrayList<Lista> listas = dbms.consultarListas();
        for (Columna col : matriz.getColumnas()) {
            if ("Lista".equals(col.getTipo())) {
                System.out.println("El tipo de la columna es lista" + col.getIdLista());
                for (Lista lista : listas) {
                    if (lista.getIdLista() == (col.getIdLista())) {
                        col.setLista(lista);
                    }
                }
                System.out.println("\t  GUARDO LA LISTA " + col.getLista());
                request.setAttribute(col.getLista().getNombre(), col.getLista().getValores());
            }
        }
        // matriz.setNumeroColumnas(matriz.getColumnas().size());
        //  matriz.setNumeroFilas(matriz.getFilas().size());
        request.setAttribute("Matriz", matriz);
        request.getSession().setAttribute("Ruta", new Ruta("Accion: Consultando Matriz"));
        return mapping.findForward(SUCCESS);
    }

    public ActionForward some(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
//        Usuario usr = (Usuario) request.getSession().getAttribute("logueado");
//        DataBaseManager dbms = DataBaseManager.getInstance();
//        if (!PermisosManager.validar(this.name, dbms.consultarPermisoAccion(name), usr.getPermiso())) {
//            System.out.println("No tiene permiso");
//            return mapping.findForward(FAILURE);
//        }
        request.setAttribute("anos",DataBaseManager.getFechas());
        request.getSession().setAttribute("Ruta", new Ruta("Accion: Consultando Matriz"));
        return mapping.findForward(SOME);
    }

    public ActionForward oneType(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //        Usuario usr = (Usuario) request.getSession().getAttribute("logueado");
//        DataBaseManager dbms = DataBaseManager.getInstance();
//        if (!PermisosManager.validar(this.name, dbms.consultarPermisoAccion(name), usr.getPermiso())) {
//            System.out.println("No tiene permiso");
//            return mapping.findForward(FAILURE);
//        }
        DataBaseManager dbms = DataBaseManager.getInstance();

        Matriz m = (Matriz) form;
        System.out.println("Tipo y IDmatriz recibidos por parametro:" + m.getTipo() + " " + m.getIdMatriz());
        Matriz matriz = dbms.consultarMatrizConDatos(m,m.getAno(),m.getTrimestre());
        matriz.setTipo(m.getTipo());
        System.out.println("matrizConsultada" + matriz.getNombre());
        for (Columna col : matriz.getColumnas()) {
            if ("Lista".equals(col.getTipo())) {
                ArrayList<Lista> listas = dbms.consultarListas();
                for (Lista lista : listas) {
                    if (lista.getIdLista() == (col.getIdLista())) {
                        col.setLista(lista);
                    }
                }

                request.setAttribute(col.getLista().getNombre(), col.getLista().getValores());

            }
        }
        if (matriz.isAjuste()) {
            request.setAttribute("Ajuste", "ajuste");
        }
        request.setAttribute("anos",DataBaseManager.getFechas());
        request.setAttribute("Matriz", matriz);
        request.getSession().setAttribute("Ruta", new Ruta("Accion: Consultando Matriz"));
        return mapping.findForward(SUCCESS);

    }
}